const mongoose = require('mongoose');
const { ObjectId } = mongoose.Schema;

/**
 * Export model definition object.
 */
module.exports = {
  userId: { type: ObjectId, required: true },
  operationTime: { type: Number, required: true },
  /**
   操作对象：
   用户 user
   项目(任务) project
   版本 version
   文件 file
   函数 function
   用例 testcase
   任务(操作) task
   缺陷 defect
   许可 license
   日志 log
   模板 template
   报告 report
   系统 system
   */
  operationObject: {
    type: String,
    enum: ['user', 'project', 'version', 'file', 'function', 'testcase',
      'task', 'defect', 'license', 'log', 'template', 'report', 'system'],
    required: true,
  },
  /**
   操作类型：
   登录 login
   登出 logout
   新增 create
   修改 update
   删除 delete
   导入 import
   导出 export
   暂停 resume
   取消 cancel
   继续 continue
   解析 analyze
   执行 execute
   */
  operationType: {
    type: String,
    enum: ['login', 'logout', 'create', 'update', 'delete', 'import',
      'export', 'resume', 'cancel', 'continue', 'analyze', 'execute'],
    required: true,
  },
  // 操作简述
  operationDesc: { type: String },
  // 1:成功，2：失败
  operationResult: {
    type: Number,
    enum: [1, 2],
    required: true,
  },
  projectId: ObjectId,
  versionId: ObjectId,
  fileId: ObjectId,
  functionId: ObjectId,
  testcaseId: ObjectId,
  name: String,
};
